<?php

class BannerController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return Yii::app()->GetAccessRule->get();
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new BannerMaster;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['BannerMaster']))
		{
			$model->attributes=$_POST['BannerMaster'];
			$model->banner_code=$_POST['BannerMaster']['banner_code'];
			$model->widget_name=$_POST['BannerMaster']['widget_name'];
			$model->sort_order = $_POST['BannerMaster']['sort_order'];
			$model->start_date=date('Y-m-d', strtotime($_POST['BannerMaster']['start_date']));
			$model->end_date=date('Y-m-d', strtotime($_POST['BannerMaster']['end_date']));
			if($model->type== 'image')
			{
				$temp= CUploadedFile::getInstance($model,'image');
				$type_array = array("jpg","jpeg","gif","png");
				if(!empty($temp) )
				{
				$name=$temp->getName();
				$extension = substr($name, strpos($name, '.')+1);
				
				if(in_array(strtolower($extension),$type_array))
				{	
						$name=md5($name.time()).'.'.$extension;
						$model->image=$name;
						if(!is_dir(ApplicationConfig::app()->params['folder_path']['uploads']))
						{
							mkdir(ApplicationConfig::app()->params['folder_path']['uploads']);
						}
						if(!is_dir(ApplicationConfig::app()->params['folder_path']['banners']))
						{
							mkdir(ApplicationConfig::app()->params['folder_path']['banners']);
						}
						if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersLarge']))
						{
							mkdir(ApplicationConfig::app()->params['folder_path']['bannersLarge']);
						}
						if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersSmall']))
						{
							mkdir(ApplicationConfig::app()->params['folder_path']['bannersSmall']);
						}
						if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersMid']))
						{
							mkdir(ApplicationConfig::app()->params['folder_path']['bannersMid']);
						}
						
						$temp->saveAs(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name );
					    copy(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name , ApplicationConfig::app()->params['folder_path']['bannersSmall'] . '/'. $name );
						copy(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name , ApplicationConfig::app()->params['folder_path']['bannersMid'] . '/'. $name );
						
						//resize mid img
					    $image = Yii::app()->image->load(ApplicationConfig::app()->params['folder_path']['bannersMid'] . '/'.$name);
						$dim = BackendApplicationConfig::getImagedimensions('mid');
					    $image->resize($dim['width'], $dim['height']);
						$image->save();
						
						//resize small img
					    $image = Yii::app()->image->load(ApplicationConfig::app()->params['folder_path']['bannersSmall'] . '/'.$name);
						$dim = BackendApplicationConfig::getImagedimensions('small');
					    $image->resize($dim['width'], $dim['height']);
						$image->save();	
				}		
				}
				
			}
		//	echo '<pre>' ;print_r($model->attributes);exit;
			if($model->save())
				$this->redirect(array('admin','id'=>$model->banner_id));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);
		$prevtype=$model->type;
        if($prevtype=="image")
		{
			$previmage=$model->image;
		}
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['BannerMaster']))
		{   
			$model->attributes=$_POST['BannerMaster'];
			$model->banner_code=$_POST['BannerMaster']['banner_code'];
			$model->widget_name=$_POST['BannerMaster']['widget_name'];
			$model->sort_order = $_POST['BannerMaster']['sort_order'];
			//echo '<pre>';	print_r($model->attributes);exit;
			$model->start_date=date('Y-m-d', strtotime($_POST['BannerMaster']['start_date']));
			$model->end_date=date('Y-m-d', strtotime($_POST['BannerMaster']['end_date']));
			
			if($model->type== 'image')
			{
				$temp= CUploadedFile::getInstance($model,'image');
				//echo '<pre>';	print_r($model->attributes);exit;	
				$type_array = array("jpg","jpeg","gif","png");
					if(!empty($temp))
					{
					$name=$temp->getName();
					$extension = substr($name, strpos($name, '.')+1);
					
						if(in_array(strtolower($extension),$type_array))
						{	
								$name=md5($name.time()).'.'.$extension;
								$model->image=$name;
								
								if($previmage != "")
								{
									if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage))
									{
										unlink(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage);
									}
									if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage))
									{
										unlink(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage);
									}
									if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage))
									{
										unlink(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage);
									}
								}
								
								
								if(!is_dir(ApplicationConfig::app()->params['folder_path']['uploads']))
								{
									mkdir(ApplicationConfig::app()->params['folder_path']['uploads']);
								}
								if(!is_dir(ApplicationConfig::app()->params['folder_path']['banners']))
								{
									mkdir(ApplicationConfig::app()->params['folder_path']['banners']);
								}
								if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersLarge']))
								{
									mkdir(ApplicationConfig::app()->params['folder_path']['bannersLarge']);
								}
								if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersSmall']))
								{
									mkdir(ApplicationConfig::app()->params['folder_path']['bannersSmall']);
								}
								if(!is_dir(ApplicationConfig::app()->params['folder_path']['bannersMid']))
								{
									mkdir(ApplicationConfig::app()->params['folder_path']['bannersMid']);
								}
								
								$temp->saveAs(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name );
							    copy(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name , ApplicationConfig::app()->params['folder_path']['bannersSmall'] . '/'. $name );
								copy(ApplicationConfig::app()->params['folder_path']['bannersLarge'] . '/'. $name , ApplicationConfig::app()->params['folder_path']['bannersMid'] . '/'. $name );
								
								//resize mid img
							    $image = Yii::app()->image->load(ApplicationConfig::app()->params['folder_path']['bannersMid'] . '/'.$name);
								$dim = BackendApplicationConfig::getImagedimensions('mid');
							    $image->resize($dim['width'], $dim['height']);
								$image->save();
								
								//resize small img
							    $image = Yii::app()->image->load(ApplicationConfig::app()->params['folder_path']['bannersSmall'] . '/'.$name);
								$dim = BackendApplicationConfig::getImagedimensions('small');
							    $image->resize($dim['width'], $dim['height']);
								$image->save();	
						}		
					}	
					else 
					{
						$model->image=$previmage;
					}	
			}
			
			if($model->type=="code")
			{
			
			//echo $type; echo $oldimg; exit;
				if($prevtype="image")
				{
					if($previmage != "")
					{
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage);
							}
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage);
							}
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage);
							}
					}
				}
				$model->image="";
				//echo '<pre>';	print_r($model->attributes);exit;	
			}
			
			if($model->type=="widget")
			{
			
			//echo $type; echo $oldimg; exit;
				if($prevtype="image")
				{
					if($previmage != "")
					{
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage);
							}
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage);
							}
							if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage))
							{
								unlink(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage);
							}
					}
				}
				$model->image="";
				//echo '<pre>';	print_r($model->attributes);exit;	
			}
			
			if($model->save())
				$this->redirect(array('admin','id'=>$model->banner_id));
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			
			/*$model=$this->loadModel($id);
			if($model->type=="image")
			{
				if(file_exists(YiiBase::getPathOfAlias('webroot.uploads.banner.large').'/'.$model->image))
				{ 
					unlink(YiiBase::getPathOfAlias('webroot.uploads.banner.large').'/'.$model->image);
				}
				if(file_exists(YiiBase::getPathOfAlias('webroot.uploads.banner.small').'/'.$model->image))
				{
					unlink(YiiBase::getPathOfAlias('webroot.uploads.banner.small').'/'.$model->image);
				}
			}*/
			$model = $this->loadModel($id);
			$previmage = $model->image;
			$model->delete();
			
			
	    	if($previmage != "")
		 	{
				if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage))
				{
					unlink(ApplicationConfig::app()->params['folder_path']['bannersLarge'].'/'. $previmage);
				}
				if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage))
				{
					unlink(ApplicationConfig::app()->params['folder_path']['bannersMid'].'/'. $previmage);
				}
				if(file_exists(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage))
				{
					unlink(ApplicationConfig::app()->params['folder_path']['bannersSmall'].'/'. $previmage);
				}
			}

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('BannerMaster');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new BannerMaster('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['BannerMaster']))
			$model->attributes=$_GET['BannerMaster'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}
	
	public function actionAdminrhs()
	{
		$model=new BannerMaster('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['BannerMaster']))
			$model->attributes=$_GET['BannerMaster'];

		$this->render('adminrhs',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=BannerMaster::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='banner-master-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
